//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_ArvoreBinaria.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmArvoreBinaria *frmArvoreBinaria;
//---------------------------------------------------------------------------
__fastcall TfrmArvoreBinaria::TfrmArvoreBinaria(TComponent* Owner, ArvoreBinaria * arvore): TForm(Owner)
{
	edArvoreBinaria = arvore;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArvoreBinaria::btnInserirClick(TObject *Sender)
{
	edArvoreBinaria->insere(StrToIntDef(edtValor->Text, 0));
	atualiza();
}
//---------------------------------------------------------------------------
void TfrmArvoreBinaria::atualiza()
{
	int i;
	double distorcao;

	distorcao = ((double)faixaDistorcao->Position)/((double)faixaDistorcao->Max);

	vetorOrdenado = edArvoreBinaria->ordem(EM_ORDEM);

	edtOrdenado->Clear();
	for (i = 0; i < vetorOrdenado->size(); i++)
	{
     	edtOrdenado->Text = edtOrdenado->Text + IntToStr(vetorOrdenado->at(i)) + ", "; 
	}

	imgCanvasArvore->Canvas->FillRect(imgCanvasArvore->ClientRect);
	imgCanvasArvore->Canvas->Pen->Color = clBlack;
	imgCanvasArvore->Canvas->Brush->Color = clInactiveCaption;
	imgCanvasArvore->Canvas->Rectangle(0, 0, pnlCanvas->Width - 1, pnlCanvas->Height - 1);

	edArvoreBinaria->desenhaArvore((imgCanvasArvore->Width)/2, RAIO, distorcao, imgCanvasArvore);

	imgCanvasArvore->Refresh();
}
//---------------------------------------------------------------------------

void __fastcall TfrmArvoreBinaria::edtValorKeyPress(TObject *Sender, char &Key)
{
	if(!isdigit(Key))
	{
		Key = 0;
	}	
}
//---------------------------------------------------------------------------

void __fastcall TfrmArvoreBinaria::btnRemoverClick(TObject *Sender)
{
	edArvoreBinaria->remove(StrToIntDef(edtValor->Text, 0));
	atualiza();
}
//---------------------------------------------------------------------------

void __fastcall TfrmArvoreBinaria::faixaDistorcaoChange(TObject *Sender)
{
	atualiza();
}
//---------------------------------------------------------------------------      
void __fastcall TfrmArvoreBinaria::FormActivate(TObject *Sender)
{
	atualiza();	
}
//---------------------------------------------------------------------------

void __fastcall TfrmArvoreBinaria::btnLimparClick(TObject *Sender)
{
	edArvoreBinaria->BinLadenEncontrouMinhaArvore();
	atualiza();	
}
//---------------------------------------------------------------------------

void __fastcall TfrmArvoreBinaria::btnAleatorioClick(TObject *Sender)
{
	edArvoreBinaria->insere(rand()%50);
	atualiza();
}
//---------------------------------------------------------------------------

